A storage system can include a computing system or group of computing systems that offer storage services to one or more client computing systems. For example, a network storage controller, which may be a storage server, can be used in a storage area network (SAN) or in a network attached storage (NAS) environment. Either a SAN or NAS environment typically includes one or more mass storage devices for storage of data.
A network storage controller manages data in the mass storage devices. Typically a network storage controller provides requesting client computers with file level access, block level access or both. The mass storage devices can be non-volatile storage such as magnetic or optical disks. Such mass storage devices may be organized into groups of drives, such as into a redundant array of independent disks (RAID). A network storage controller typically includes memory for buffering data to be read from and written to the mass storage system. A network storage controller can implement the buffer as dynamic random access memory (DRAM).
The non-volatile mass storage devices may be aggregated and divided into volumes including logical units. Each logical unit can be identified by a logical unit number (LUN). The volume and all included logical units within the volume can be backed up by creating a persistent point-in-time image (PPI) of volume data.
A PPI is typically created as read-only, however, the PPI can be created as a read-write PPI. Such a read-write PPI can be referred to as a “writeable PPI.” One or more clients may access a writeable PPI via a network, such as by mapping to the logical units within the writeable PPI and reading from and writing to the logical units as virtual mass storage devices. Data is stored to and retrieved from the logical units by the clients as though the logical units were locally attached to the clients as mass storage devices.
A client can request a writeable PPI for the purpose of performing an operation on data within the writeable PPI. Such operations can have many purposes, for example, a client could desire to perform tests on data that could not be performed on a volume in use, the client may wish to delete data or modify data, etc.
In response to the request for a writeable PPI, a storage server can create a writeable PPI. Typically, a volume and a writeable PPI created from the volume each include multiple logical units. However, only a subset of the logical units may be needed by the client for the particular purpose for which the writeable PPI was requested. Creation of more than one writeable PPI from the same volume can lead to unnecessary replication of data and increased overhead costs in managing the numerous logical units, many of which are not used. Further, some systems may have a finite number of writeable PPIs that can be managed. In an environment having numerous volumes, creation of many writeable PPIs can exhaust such a finite number.